热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基准|这一点_Android自动创建最小宽度限定符文件插件AutoDimens

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android自动创建最小宽度限定符文件插件AutoDimens相关的知识,希望对你有一定的参考价值。本文主要涉及以

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android 自动创建最小宽度限定符文件插件 AutoDimens相关的知识,希望对你有一定的参考价值。


本文主要涉及以下几篇文章

Android 屏幕适配总结

Android ConstraintLayout 使用与适配(使用篇)

Android ConstraintLayout 使用与适配(适配篇)

说明:本插件基于 ScreenMatch 的源码修改,十分感谢 ScreenMatch 作者,使本插件减少很多工作量。之所以重复造轮子,有以下三个原因:

    1.想自己学习写一个插件

    2.本插件主要针对 ConstraintLayout + SP 适配的方式,针对 ConstraintLayout 无法适配字体,使用最小宽度限定符的方式适配工程中的字体。使用 ConstraintLayout 适配的方式见:Android ConstraintLayout 使用与适配(适配篇)

    3.指明 ScreenMatch 中的一个问题,ScreenMatch 不会创建指定的 base_dp 值的dimens.xml文件,如他设置的最小宽度基准值是 360,但是并没有创建 values-sw360dp 的文件夹,这是不对的,如果认为默认文件values是360dp的最小宽度值也是错误的,因为默认文件夹是320X640 dpi160的屏幕,因此默认最小宽度值是320dp。这一点可以用事实证明,使用如下方式证明:

1.将屏幕宽320分成3个View,第一个View宽10dp,第二个View宽300dp,第三个View宽10dp,如果默认屏幕宽是320dp,那运行此布局肯定能看到第三个View,并且第三个View与第一个View显示大小一致。

2.将屏幕高480分成3个View,第一个View高10dp,第二个View高460dp,第三个View高10dp,如果默认屏幕高是480dp,那运行此布局肯定能看到第三个View,并且第三个View与第一个View显示大小一致。

测试布局代码如下:


<androidx.constraintlayout.widget.ConstraintLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:app&#61;"http://schemas.android.com/apk/res-auto"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent">

android:id&#61;"&#64;&#43;id/view1"
android:layout_width&#61;"10dp"
android:layout_height&#61;"30dp"
android:layout_marginTop&#61;"30dp"
android:background&#61;"&#64;color/colorAuto"
app:layout_constraintStart_toStartOf&#61;"parent"
app:layout_constraintTop_toTopOf&#61;"parent" />
android:id&#61;"&#64;&#43;id/view2"
android:layout_width&#61;"300dp"
android:layout_height&#61;"30dp"
android:background&#61;"&#64;color/colorAccent"
app:layout_constraintBottom_toBottomOf&#61;"&#64;&#43;id/view1"
app:layout_constraintStart_toEndOf&#61;"&#64;&#43;id/view1"
app:layout_constraintTop_toTopOf&#61;"&#64;&#43;id/view1" />
android:id&#61;"&#64;&#43;id/view3"
android:layout_width&#61;"10dp"
android:layout_height&#61;"30dp"
android:background&#61;"&#64;color/colorBlack"
app:layout_constraintBottom_toBottomOf&#61;"&#64;&#43;id/view1"
app:layout_constraintStart_toEndOf&#61;"&#64;&#43;id/view2"
app:layout_constraintTop_toTopOf&#61;"&#64;&#43;id/view1" />


android:id&#61;"&#64;&#43;id/view4"
android:layout_width&#61;"30dp"
android:layout_height&#61;"10dp"
android:layout_marginLeft&#61;"30dp"
android:background&#61;"&#64;color/colorAuto"
app:layout_constraintStart_toStartOf&#61;"parent"
app:layout_constraintTop_toTopOf&#61;"parent" />
android:id&#61;"&#64;&#43;id/view5"
android:layout_width&#61;"30dp"
android:layout_height&#61;"460dp"
android:background&#61;"&#64;color/colorParent"
app:layout_constraintEnd_toEndOf&#61;"&#64;&#43;id/view4"
app:layout_constraintStart_toStartOf&#61;"&#64;&#43;id/view4"
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/view4" />
android:id&#61;"&#64;&#43;id/view9"
android:layout_width&#61;"30dp"
android:layout_height&#61;"10dp"
android:background&#61;"&#64;color/colorBlack"
app:layout_constraintEnd_toEndOf&#61;"&#64;&#43;id/view5"
app:layout_constraintStart_toStartOf&#61;"&#64;&#43;id/view5"
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/view5" />

使用 Genymontion 创建一个 320X480 的屏幕&#xff0c;并设置dpi为160&#xff0c;运行结果如下


一、安装

Android Studio 选择 File —— Settings —— Plugins 在 Marketplace 中搜索 AutoDimens

 


二、使用

1.在项目区域点击右键选择 AutoDimens 或使用快捷方式Ctrl&#43;Alt&#43;I。

2.选择要适配的 Module 名称

3.创建成功提示 Ok, create dimens file successfully!

创建成功后会在选择的 Module 下创建相应的最小宽度限定符文件夹与 dimens.xml 文件&#xff0c;如下

创建成功后还会在项目根目录中创建 autoDimension.properties 配置文件&#xff0c;如下


三、autoDimension.properties 配置文件说明

#指定最小宽度基准值&#xff0c;应该使用设计图尺寸的宽&#xff0c;默认最小宽度基准值为 360
baseSW&#61;
#按最小宽度限定符适配的方式&#xff0c;添加最小宽度值&#xff0c;多个值使用英文逗号(,)分割 如 360,420,450
#目前默认包含的最小宽度值为&#xff1a;384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
#如果不需要某个最小宽度值&#xff0c;可在 ignoreSize 参数后指明
#将按指定的 XXX 值创建相应的 values-swXXXdp 文件夹与 dimens.xml 文件
matchSW&#61;
#取消默认包含的最小宽度值&#xff0c;多个值使用英文逗号(,)分割 如 384,392,400
#目前默认包含最小屏幕尺寸值为&#xff1a;384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
#指定后将不会创建相应默认值中的 values-swXXXdp 文件夹与 dimens.xml 文件
ignoreSW&#61;
#指定默认的 module 名&#xff0c;如果设置指定的 module 名称后,
#将直接创建指定的最小宽度文件夹与相应 dimens.xml 文件并刷新工程&#xff0c;不会有任何提示
designateModule&#61;
#是否直接创建带默认值的 dimens.xml 文件&#xff0c;
#如果为 true 则在指定的各最小宽度限定符文件夹中直接创建 dimens.xml 文件&#xff0c;
#并且每个 dimens.xml 文件中默认包含 1sp - 100sp 的 dimen 值
isUseDefaultDimension&#61;false

 四、使用建议

不建议使用懒人方式直接创建所有包含默认值的文件 dimens.xml&#xff0c;应该在默认 values 中的 dimens.xml 写明自己用到的值&#xff0c;项目写完后再使用适配工具创建所有最小宽度限定符文件。原因是减少无用代码&#xff0c;毕竟少一个值就相当于少指定最小宽度N乘1个值。


推荐阅读
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 本文详细介绍了如何在 Android 应用中获取系统的版本号,包括具体的应用场景和实现步骤。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 深入解析 Android 选择器与形状绘制技术
    本文深入探讨了 Android 中选择器(Selector)与形状绘制(Shape Drawing)技术的应用与实现。重点分析了 `Selector` 的 `item` 元素,其中包括 `android:drawable` 属性的使用方法及其在不同状态下的表现。此外,还详细介绍了如何通过 XML 定义复杂的形状和渐变效果,以提升 UI 设计的灵活性和美观性。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
author-avatar
默默-晶f
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有